/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is Forte for Java, Community Edition. The Initial
* Developer of the Original Code is Sun Microsystems, Inc. Portions
* Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.examples.modules.objectview;
import java.awt.BorderLayout;
import java.awt.Component;
import org.openide.TopManager;
import org.openide.filesystems.*;
import org.openide.loaders.*;
import org.openide.awt.SplittedPanel;
import org.openide.nodes.Node;
import org.openide.explorer.ExplorerPanel;
import org.openide.explorer.view.ListView;
import org.openide.explorer.view.ContextTreeView;
import org.openide.explorer.view.BeanTreeView;
import org.openide.src.nodes.SourceElementFilter;
import org.openide.src.nodes.ClassElementFilter;
/**
* Opens a new Explorer with a context tree view and list view.
* Stolen from the Open API examples by Jaroslav Tulach.
*
* @author Jaroslav Tulach
*/
public class ObjectView extends ExplorerPanel {
static final long serialVersionUID =-920038335773815357L;
/** Creates new ObjectView. */
public ObjectView() {
// create a new TreeView component which does not display leaves (ContextTreeView)
Component tree = new ContextTreeView ();
// BeanTreeView tree = new BeanTreeView ();
// create a new ListView component
Component list = new ListView ();
// create a splitted panel with horizontal split and add the Explorer views into it
SplittedPanel panel = new SplittedPanel ();
panel.setSplitType (SplittedPanel.HORIZONTAL);
panel.add (tree, SplittedPanel.ADD_FIRST);
panel.add (list, SplittedPanel.ADD_SECOND);
setLayout (new BorderLayout ());
add (panel, BorderLayout.CENTER);
}
/** Explore the folder elements.
*/
public static void explore (DataFolder df) {
// This pays attention to ElementCookie's on some data objects, e.g. Java source d.o.'s:
DataObjectFilter filter = new DataObjectFilter (df);
// SourceElementFilter sef = new SourceElementFilter();
// sef.setOrder (new int[] {f});
// sef.setModifiers (m);
// sef.setAllClasses (true);
// filter.putFilter (SourceElementFilter.class, sef);
// Create a view of the folder, Object-Browser style:
Node node = df.new FolderNode (filter);
// Ask child components which are Explorer views to display this node:
ExplorerPanel view = new ObjectView ();
view.getExplorerManager ().setRootContext (node);
view.open ();
}
/** Open the explorer on given folder.
* @param arr should hold one package name
*/
public static void main (String[] arr) {
if (arr.length == 0) {
System.err.println("Usage: " + ObjectView.class.getName () + " org.netbeans.examples");
return;
}
Repository rep = TopManager.getDefault ().getRepository ();
FileObject res = rep.find (arr[0], null, null);
if (res == null) {
System.err.println("Resource not found: " + arr[0]);
return;
}
DataFolder df = DataFolder.findFolder (res);
explore (df);
}
}